package com.zmn.oms.zmn.business.interfaces.compensate;

import com.zmn.oms.common.dto.OmsOperator;
import com.zmn.oms.common.exception.OmsBaseException;
import com.zmn.oms.model.dto.work.compensate.CompensateDTO;
import com.zmn.oms.model.dto.work.compensate.CompensateReviewDTO;
import com.zmn.oms.model.dto.work.compensate.RemitVoucherDTO;
import com.zmn.oms.model.entity.work.OrderWork;
import com.zmn.oms.model.vo.work.compensate.CompensateVO;

/**
 * @ClassName CompensateBService
 * @description:
 * @author: wangyanci
 * @create: 2021-08-18 18:43
 * @Version 1.0
 **/
public interface CompensateBService {

    /**
     * 获取赔偿单VO
     * @param orderId
     * @param workId
     * @return
     */
    CompensateVO getCompensateVO(Long orderId, Long workId);

    /**
     * 提交赔偿单
     * @param compensateDTO
     * @return
     * @throws OmsBaseException
     */
    OrderWork commitCompensate(CompensateDTO compensateDTO) throws OmsBaseException;

    /**
     * 修改赔偿单
     * @param compensateDTO
     * @return
     * @throws OmsBaseException
     */
    OrderWork updateCompensate(CompensateDTO compensateDTO) throws OmsBaseException;

    /**
     * 审核赔偿单
     * @param compensateReviewDTO
     * @return
     * @throws OmsBaseException
     */
    OrderWork reviewCompensate(CompensateReviewDTO compensateReviewDTO) throws OmsBaseException;

    /**
     * 保存打款凭证
     * @param remitVoucherDTO
     * @return
     */
    OrderWork saveRemitVoucher(RemitVoucherDTO remitVoucherDTO);

    /**
     *  赔偿单取消
     * @param dbOrderWork
     * @param omsOperator
     * @throws OmsBaseException
     */
    void cancelCompensateOrder(OrderWork dbOrderWork, OmsOperator omsOperator) throws OmsBaseException;
}
